package utils;

import java.lang.reflect.Field;
import java.util.Date;
import java.util.Iterator;
import java.util.Set;

import javax.persistence.Parameter;
import javax.persistence.Query;

public class LogQureyUtils {

	// 处理查询单个结果异常
	public static void logqurey(Query query) {
		StringBuffer logstr = new StringBuffer();
		String s = "";
		String sql = "";
		for (Field f : query.getClass().getDeclaredFields()) {
			if ("query".equals(f.getName())) {
				f.setAccessible(true);
				try {
					s = f.get(query).toString();
					sql = s.substring(s.indexOf("(") + 1, s.lastIndexOf(")"));
				} catch (Exception e1) {
					// TODO Auto-generated catch block
					LogUtil.logerror("记录Query日志出错:" + new Date());
				}
				f.setAccessible(false);
				break;
			}
		}
		logstr.append("\r\n").append(sql).append("\r\n");
		Set<Parameter<?>> parameters = query.getParameters();
		Iterator<Parameter<?>> i = parameters.iterator();
		while (i.hasNext()) {
			Parameter<?> p = (Parameter<?>) i.next();
			logstr.append(p.getName()).append("=").append(query.getParameterValue(p.getName())).append(",");
		}
		LogUtil.logerror(logstr.toString());
	}

}
